#ifndef TDIALOGLOGIN_H
#define TDIALOGLOGIN_H

#include <QDialog>
#include <QMouseEvent>
#include <QGraphicsPixmapItem>
#include <QGraphicsScene>
#include <QTimeLine>
#include <QSvgWidget>
#include <QVBoxLayout>
#include <QGradient>
#include <QBrush>
#include <QGraphicsView>

namespace Ui {
class tDialogLogin;
}

class tDialogLogin : public QDialog
{
    Q_OBJECT

private:
    bool m_moving = false;  // 标记窗口是否处于拖动状态
    QPoint m_lastpos;       // 存储鼠标按下时的初始位置（用于窗口拖动）
    QString m_user = "user";// 存储当前登录的用户名（默认值为"user"）
    QString m_pswd;         // 存储加密后的密码（MD5加密）
    int m_tryCount = 0;     // 记录登录失败次数（限制最多3次）
    bool m_isSaveInfo = false; // 标记是否需要保存用户信息（与复选框状态绑定）

    // 背景动画相关成员变量
    QGraphicsScene* m_scene;       // 图形场景，用于承载背景图片
    QGraphicsView* m_view;         // 图形视图，用于显示场景内容
    QGraphicsPixmapItem* m_bgItem; // 背景图片项，存储背景图片资源
    QTimeLine* m_timeLine;         // 时间线，控制渐变动画的播放
    QLinearGradient m_currentGradient; // 当前使用的线性渐变（动态更新）

    // 核心功能函数声明
    void readSettings();        // 从配置文件读取加密后的用户信息（账号+密码）
    void writeSettings();       // 将当前输入的账号和加密后的密码写入配置文件
    QString encrypt(QString pw); // 对密码进行MD5加密（防止明文存储）
    void initBackground();      // 初始化动态渐变背景+半透明图片背景
    void initStyle();           // 初始化界面样式（无边框、圆角、控件样式）
    void updateGradient(int frame); // 根据动画帧更新渐变颜色和方向

protected:
    // 重写事件处理函数
    void mousePressEvent(QMouseEvent *event) override; // 鼠标按下事件（实现窗口拖动）
    void mouseReleaseEvent(QMouseEvent *event) override; // 鼠标释放事件（结束窗口拖动）
    void mouseMoveEvent(QMouseEvent *event) override; // 鼠标移动事件（执行窗口拖动）
    void paintEvent(QPaintEvent *event) override; // 绘图事件（绘制渐变背景和图片）
    void resizeEvent(QResizeEvent *event) override; // 窗口大小变化事件（适配背景）

public:
    explicit tDialogLogin(QWidget *parent = nullptr); // 构造函数
    ~tDialogLogin(); // 析构函数

private slots:
    void on_pushButton_clicked();       // 登录按钮点击槽函数（验证账号密码）
    void on_pushButton_2_clicked();     // 取消按钮点击槽函数（关闭登录窗口）
    void on_checkBox_stateChanged(int arg1); // 复选框状态变化槽函数（更新保存标记）

private:
    Ui::tDialogLogin *ui; // UI界面指针（自动生成）
};

#endif // TDIALOGLOGIN_H
